// 这个文件就是用于接收前端请求参数
#include <cgic.h>
#include <glib.h>
#include "msgUtil.h"

int cgiMain() 
{
    char gatewayIp[128];
    char location[256];

    // 读取配置信息
    cgiFormString("gatewayIp",gatewayIp,128);
    cgiFormString("location",location,256);

    // 读取配置文件，获取设备文件路径(防止硬编码)
    GKeyFile *file = g_key_file_new();
    g_key_file_load_from_file(file,"../config/config.ini",G_KEY_FILE_NONE,NULL);
    gchar* path = g_key_file_get_string(file,"config","deviceInfoPath",NULL);

    GKeyFile *keyFile = g_key_file_new();
    g_key_file_set_string(keyFile,"config","gatewayIp",gatewayIp);
    g_key_file_set_string(keyFile,"config","location",location);
    g_key_file_save_to_file(keyFile,path,NULL);
    g_key_file_free(keyFile);
    g_key_file_free(file);

    // 配置信息存入配置文件以后，需要向主进程发送一个消息，通知主进程去网关服务器注册当前广告机信息
    // 这里利用消息队列实现进程间通信
    char* data = "操作成功!";
    // 1 创建mqId
    int mqId = getMsgQueue();
    if(mqId == -1)
    {
        // 这段代码是boa服务器去运行的，是看不见控制台信息的（使用perror printf打印到控制台），可以通过html页面响应来告诉管理员
        data = "操作失败，消息队列创建失败!";
    }else{
        Message msg = {
            .type = 1,
            .text = "this's is a test data"
        };
        // 发消息
        int ret = sendMsg(mqId,&msg,strlen(msg.text)+1);
        if(ret == -1)
        {
            data = "操作失败，发送消息失败！";
        }

    }

    cgiHeaderContentType("text/html");
	fprintf(cgiOut, "<HTML><HEAD> <meta charset=\"UTF-8\"> \n");
	fprintf(cgiOut, "<TITLE>cgic测试</TITLE></HEAD>\n");
	fprintf(cgiOut, "<BODY><H1>%s</H1>\n",data);
    fprintf(cgiOut,"</BODY></HTML>");
    return 0;
}